Skip to content

Land P1 review epic, dogfood ast rules, run CI on every push#1

Merged
christopherarter merged 2 commits into
mainfrom
p1-review-epic
Apr 17, 2026
Merged

Land P1 review epic, dogfood ast rules, run CI on every push#1
christopherarter merged 2 commits into
mainfrom
p1-review-epic

Conversation

@christopherarter

Copy link
Copy Markdown
Contributor

P1 epic from the principal-engineer review (TASK-1.1 through 1.4):

  • ship bully console entrypoint (bully validate / lint / doctor / show-resolved-config); hook.sh continues to call pipeline.py by absolute path so the hook env doesn't depend on $PATH
  • skills + docs no longer hardcode $HOME/.bully/pipeline/pipeline.py; primary path is bully with documented plugin/manual fallbacks
  • top-level skip: in .bully.yml + ~/.bully-ignore merge with built-in SKIP_PATTERNS so multi-language monorepos don't have to patch source
  • --explain flag surfaces per-rule verdict (fire/pass/skipped / dispatched); run_pipeline gains include_skipped=True; hook-mode shape unchanged

Trust-gate docs in SECURITY.md; ast-engine + trust-gate tests land for the prior P0 work.

Dogfood ourselves on the new tooling:

  • two engine: ast rules in .bully.yml (prefer-perf-counter, no-shell-true-subprocess) scoped to pipeline source; the legitimate shell=True in execute_script_rule carries an inline bully-disable
  • scripts/dogfood.sh prefers bully lint when on PATH and runs bully validate as a sanity preamble
  • CI installs ast-grep-cli so ast rules actually fire instead of silently skipping; runs on every push (not just main)

Tests: 226 -> 243.

Chris Arter and others added 2 commits April 17, 2026 12:01
P1 epic from the principal-engineer review (TASK-1.1 through 1.4):
- ship `bully` console entrypoint (`bully validate / lint / doctor /
  show-resolved-config`); hook.sh continues to call pipeline.py by
  absolute path so the hook env doesn't depend on $PATH
- skills + docs no longer hardcode $HOME/.bully/pipeline/pipeline.py;
  primary path is `bully` with documented plugin/manual fallbacks
- top-level `skip:` in .bully.yml + ~/.bully-ignore merge with built-in
  SKIP_PATTERNS so multi-language monorepos don't have to patch source
- --explain flag surfaces per-rule verdict (fire/pass/skipped <reason>/
  dispatched); run_pipeline gains include_skipped=True; hook-mode shape
  unchanged

Trust-gate docs in SECURITY.md; ast-engine + trust-gate tests land for
the prior P0 work.

Dogfood ourselves on the new tooling:
- two engine: ast rules in .bully.yml (prefer-perf-counter,
  no-shell-true-subprocess) scoped to pipeline source; the legitimate
  shell=True in execute_script_rule carries an inline bully-disable
- scripts/dogfood.sh prefers `bully lint` when on PATH and runs
  `bully validate` as a sanity preamble
- CI installs ast-grep-cli so ast rules actually fire instead of
  silently skipping; runs on every push (not just main)

Tests: 226 -> 243.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
CI surfaced an unused `cfg` binding in test_hook_mode_output_does_not_include_semantic_skipped (the helper writes the file as a side effect; the variable wasn't read). Also pick up ruff format's reflow on pipeline.py and test_skip_config.py.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@christopherarter
christopherarter merged commit 6e4415c into main Apr 17, 2026
2 checks passed
@christopherarter
christopherarter deleted the p1-review-epic branch April 17, 2026 16:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant